import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Set;


public class Calculation_System_V0_4 {

    public static void main(String[] args) {
        System.out.println("加减法口算练习系统 v0.4");

        // 生成50道混合加减法题并保存到CSV文件
        generateExerciseOfMixedEquations();
    }

    // 生成50道混合加减法练习题并导出为CSV
    static void generateExerciseOfMixedEquations() {
        System.out.println("--- 正在生成50道100以内的加减法混合口算题 ---");
        Set<String> usedEquations = new HashSet<>(); // 用于存储已使用的算式，避免重复
        int count = 0;
        String csvFileName = "math_exercises.csv";

        try (PrintWriter writer = new PrintWriter(new FileWriter(csvFileName, false), true)) {
            // 写入CSV表头（序号、算式、结果）
            writer.println("序号,算式,结果");

            while (count < 50) {
                // 随机选择加法或减法（各50%概率）
                boolean isAddition = Math.random() > 0.5;
                String equation;
                int n, m, result;

                if (isAddition) {
                    // 生成加法题（和<100）
                    do {
                        n = generateOperand();
                        m = generateOperand();
                        result = n + m;
                    } while (result >= 100); // 确保和在100以内
                    equation = n + "+" + m;
                } else {
                    // 生成减法题（差≥0）
                    do {
                        n = generateOperand();
                        m = generateOperand();
                        result = n - m;
                    } while (result < 0); // 确保差非负
                    equation = n + "-" + m;
                }

                // 检查算式是否重复，不重复则写入CSV并输出到控制台
                if (!usedEquations.contains(equation)) {
                    usedEquations.add(equation);
                    count++;

                    // 写入CSV文件（序号从1开始）
                    writer.println(count + "," + equation + "," + result);

                    // 控制台整齐显示（每行5个算式）
                    if (isAddition) {
                        System.out.printf("%2d+%2d=%-3d", n, m, result);
                    } else {
                        System.out.printf("%2d-%2d=%-3d", n, m, result);
                    }

                    // 每5个算式换一行
                    if (count % 5 == 0) {
                        System.out.println();
                    } else {
                        System.out.print("  "); // 算式之间的间距
                    }
                }
            }

            System.out.println("\n✅ 习题已成功保存到：" + csvFileName);

        } catch (IOException e) {
            System.err.println("❌ 生成CSV文件时出错：" + e.getMessage());
            return;
        }

        // 统计加法和减法的数量
        int additionCount = 0;
        int subtractionCount = 0;
        for (String eq : usedEquations) {
            if (eq.contains("+")) {
                additionCount++;
            } else {
                subtractionCount++;
            }
        }

        System.out.println("\n题目统计：加法 " + additionCount + " 道，减法 " + subtractionCount + " 道");
    }

    // 生成1-100的随机操作数（修正原逻辑：原代码生成1-100，保持不变）
    static int generateOperand() {
        return (int) (Math.random() * 100) + 1; // 生成1-100的随机整数
    }
}